package com.shujia.day17;



import java.util.function.BiPredicate;
import java.util.function.Function;

public class Code15LambdaFunction {
    public static void main(String[] args) {
//        BiPredicate<String, String> bp = (x, y) -> x.equals(y);
//        System.out.println(bp.test("abcde", "abcde"));
//
//        System.out.println("-----------------------------------------");

        /*
             对于 :: 可以将lambda表达式中的第一个参数进行调用，将第二个参数作为变量进行传值


             实际使用时 就是将第一个参数的对象 调用其方法 将第二个参数类型的值传入方法中
         */
//        BiPredicate<String, String> bp2 = String::equals;
//        System.out.println(bp2.test("abc", "abc"));
//
//        System.out.println("-----------------------------------------");
//        Function<Employee, String> fun = (e) -> e.getName();
//        System.out.println(fun.apply(new Employee()));
//
//        System.out.println("-----------------------------------------");
//
//        Function<Employee, String> fun2 = Employee::getName;
//        System.out.println(fun2.apply(new Employee()));


//        Function<String, Employee> fun = Employee::new;
//        System.out.println(fun.apply("xiaohu"));


        Function<Integer, String[]> fun = (e) -> new String[e];
        String[] strs = fun.apply(10);
        System.out.println(strs.length);

        System.out.println("--------------------------");

        // 这是调用字符串数组的构造方法 创建对应的数组对象 进行返回
        Function<Integer, String[]> fun2 = String[] :: new;
        String[] emps = fun2.apply(20);
        System.out.println(emps.length);


    }
}


class Employee {
    private String name;


    public Employee() {
    }

    public Employee(String s) {
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}